package homeWorkDay04;

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

/**
 * 聊天室客户端
 */
public class text3client {
    /*
SOCKET--插座
一个输入一个输出
对两个流的数据读写完成与远端计算机的数据交互工作
我们可以吧socket想成一个电话 电话听筒（输入流） 麦克风（输出流） 通过他们我们就能相互交流
*/
    private Socket socket;

    public text3client() {
        try {
            System.out.println("正在链接服务端.....");
        /*
        实例化Scocket时要传入两个参数
参数1：服务器的IP、地址 localhost可以指代当前主机
参数2：服务器开启的服务端口
我们通过ip来找到网络上的服务端计算机，通过端口链接运行到该机器上的服务端引用程序
实例化的过程就是链接的过程，如果链接失败会抛出异常
         */
            socket = new Socket("localhost", 8090);
            System.out.println("与服务端简历链接！！");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /*
    客户端开始工作方法
     */
    public void start() {
        /*
        socket提供了一个方法
        outPutStream getOutputStream()
        该方法获取的字节输出流写出的字节可以通过网络发送给对方计算机
         */
        try {
            //低级流，将字节通过网络发送给对方
            OutputStream os =socket.getOutputStream();
            //高级流，转换输出流 负责下节字节流和字符流，并将写出的字符按指定字符转为字节
            OutputStreamWriter osw =new OutputStreamWriter(os);
            //高级流 缓冲输出流负责块写文本数据加速
            BufferedWriter bw =new BufferedWriter(osw);
            //高级流， 缓冲字符输出流负责按行写出字符串，行刷新
            PrintWriter pw =new PrintWriter(bw);
            pw.println("Hello!Server!");
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    public static void main(String[] args) {
        text3client t = new text3client();
        t.start();
    }
}
